package com.example.springstudy.controller;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UnknownAccountException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.subject.Subject;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.websocket.server.PathParam;

@RestController
public class LoginController {
    /**使用shiro对登录进行认证*/
    @GetMapping
    public String login(@PathParam("username") String username, @PathParam("password") String password) {
        /*1 获取Subject 及用户主体，*/
        Subject subject = SecurityUtils.getSubject();

        /*2 对拿取到的用户数据进行封装*/

        UsernamePasswordToken token = new UsernamePasswordToken(username, password);

        /*3 执行一个登录的方法,判断依据无异常侧代表成功，有异常侧代表失败*/
        try {
            /*当调用login方法的时候，会把流程交给在编写的usersRealm中的认证操作进行判断*/
            subject.login(token);
        } catch (UnknownAccountException u) {
            return "登录失败";
        }
        return "登录成功";
    }
}
